package com.design.principle.singleresponsibility;

/**
 * @ProjectName: design
 * @Package: com.design.principle.singleresponsibility
 * @ClassName: SingleResonsibility1
 * @Author: shenaiguo
 * @Description: 单一职责原则
 * @Date: 2020/8/23 0023 9:35
 */
public class SingleResonsibility2 {
    public static void main(String[] args) {
        RoadVehicle roadVehicle =new RoadVehicle();
        roadVehicle.run("摩托车");
        roadVehicle.run("汽车");
        AirVehicle airVehicle =new AirVehicle();
        airVehicle.run("飞机");
    }


}

//方案 2 的分析
//1. 遵守单一职责原则
//2. 但是这样做的改动很大，即将类分解，同时修改客户端
//3. 改进：直接修改 Vehicle 类，改动的代码会比较少=>方案 3
class RoadVehicle{
    public void run(String vehicle){
        System.out.println(vehicle+"在公路上运行......");
    }
}

class AirVehicle{
    public void run(String vehicle){
        System.out.println(vehicle+"在天空上运行......");
    }
}

class WaterVehicle {
    public void run(String vehicle) { System.out.println(vehicle + "水中运行");
    }
}